home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Euroscene 2
/
Euroscene 2.iso
/
USEFUL
/
libs
/
Docs
/
BLZW.doc
next >
Wrap
Text File
|
1995-11-01
|
5KB
|
113 lines
BLZW
Bryan's turbo-charged LZW compressor
Version 1.00
Copyright 1992 Bryan Ford
License/Disclaimer
~~~~~~~~~~~~~~~~~~
BLZW is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
BLZW is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139, USA.
Description
~~~~~~~~~~~
BLZW is an XPK packer sublibrary which implements a highly optimized
form of the popular LZW compression algorithm. This is essentially the
same algorithm used in Arc, Zoo, and Unix compress.
Most common packers for the Amiga are oriented toward pack-once,
unpack-many situations (games, demos, etc.), and thus concentrate on
unpacking speed while sacrificing decompression. Unlike these, BLZW is
intended for situations where packing speed is also important: for example,
in real-time communications (i.e. compressing data going into a modem and
decompressing it as it comes out the other end), or hard drive backup.
The LZW algorithm can operate in several modes, or "maximum code
sizes." Without getting into too many technicalities, larger codes
generally result in better compression ratios (especially for large files)
and slightly higher speed, but require more memory for both packing and
unpacking. BLZW can be told to use any maximum code size from 9 to 15
bits. For comparison, Arc used an LZW algorithm with a maximum code size
of 12 bits, Zoo operated at 13 bits, and Unix compress commonly operates at
14 or 16 bits. (Supporting 16-bit compression in BLZW would have
necessitated significant slowdown, so I decided not to support it for now.)
To select the maximum code size BLZW uses, look at the table below,
find the code size you want (or just look for the mode with the statistics
you would like), and select any number within the listed "mode range". Then
append a period and the mode number to the "BLZW" keyword specified to XPK
(or any other program that lets you specify an XPK method). For example,
to get 14-bit compression, you could type "XPK BLZW.80 <infile> <outfile>".
If you specify no maximum code size, BLZW defaults to 13 bits, and hence
operates at basically the same compression ratio as Zoo (although much
faster).
Following is a table briefly listing some comparative statistics for
BLZW. These were generated by xbench on the standard XPK benchmark system
(A3000/25 with SCRAM, using the AmigaVision executable as data).
Code Mode Packing Unpacking Packing Unpacking Compression
Size Range Memory Memory Speed Speed Ratio
~~~~~~ ~~~~~ ~~~~~~~ ~~~~~~~~~ ~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~
9 0-14 3K 2K 159 K/s 303 K/s 24.4%
10 15-28 7K 4K 141 K/s 328 K/s 29.4%
11 29-42 15K 8K 135 K/s 343 K/s 31.7%
12 43-57 30K 16K 134 K/s 356 K/s 32.4%
13 58-71 60K 32K 139 K/s 364 K/s 32.9%
14 72-85 120K 64K 143 K/s 374 K/s 33.1%
15 86-100 240K 128K 157 K/s 381 K/s 33.7%
Version History
~~~~~~~~~~~~~~~
3.00 (R3, 24-Sep-92)
Fixed a bug in the compressor that would generate a bad file if
the last code written needed to expand the code size.
2.00 (???)
Hmmm, dunno exactly what happened to this version...
1.00 (R2, 4-Jun-92)
First public release.
Contact Address
~~~~~~~~~~~~~~~
I tend to move around a great deal, so mail sent directly to me
sometimes has a hard time catching up. If you want mail to reach me (it
may take a while, but it WILL reach me), send it to this address:
Bryan Ford
8749 Alta Hills Circle
Sandy, UT 84093
I can be reached more quickly (for the time being anyway) on the phone
or through one of the electronic mail addresses below:
(801) 585-4619
bryan.ford@m.cc.utah.edu
baf0863@cc.utah.edu
baf0863@utahcca.bitnet